package com.khd.problems_0101_0200;

/**
 * 1796. 字符串中第二大的数字
 * https://leetcode-cn.com/problems/second-largest-digit-in-a-string/
 *
 * @author kehandi
 * @title: Problem_0164_SecondLargestDigitInAString
 * @projectName algorithm
 * @date 2022/4/4 21:16
 */
public class Problem_0164_SecondLargestDigitInAString {

    public static int secondHighest(String s) {
        // 顾名思义，first 是用来记录第一个的，second 是用来记录第二个的
        int first = -1, second = -1;
        for (char c : s.toCharArray()) {
            // 如果 c 是一个数字，那么就进行检查处理
            if (Character.isDigit(c)) {
                // 首先字符转换成数字
                int num = c - '0';

                if (first == -1) {
                    // 如果 first 还没有赋值呢，那么就直接赋值
                    first = num;
                } else if (num > first) {
                    // first 已经带值，而且 num 比 first 还大，那么就更新它们
                    second = first;
                    first = num;
                } else if (num < first && num > second)
                    // 如果介于两者中间，那么就只更新第二个值
                    second = num;
            }
        }
        return second;
    }

    public static void main(String[] args) {
        String ss = "adsfs12nkn3n4m5n6n2kn6n78k5nn32";
        System.out.println(secondHighest(ss));
    }
}
